home *** CD-ROM | disk | FTP | other *** search
/ Aminet 49 / Aminet 49 (2002)(GTI - Schatztruhe)[!][Jun 2002].iso / Aminet / util / misc / LC2.lha / src / LC2s.amos / LC2s.amosSourceCode < prev    next >
AMOS Source Code  |  2001-07-30  |  34KB  |  826 lines

  1. Rem LOTTO CHECK version 2.0  Copy-right 1997 Lorence Lombardo. 
  2.  
  3. Rem lory@subdimension.com
  4.  
  5.  
  6. Rem This program is Free software; you can redistribute it and/or modify 
  7. Rem it under the terms of the GNU General Public License as published by 
  8. Rem the Free Software Foundation; either version 2 of the License, or
  9. Rem (at your option) any later version.
  10.  
  11. Rem This program is distributed in the hope that it will be useful,
  12. Rem but WITHOUT ANY WARRANTY; without even the implied warranty of 
  13. Rem MERCHANTABILITY OR FITNESS For A PARTICULAR PURPOSE.  See the
  14. Rem GNU General Public License For more details. 
  15.  
  16. Rem You should have received a copy of the GNU General Public License
  17. Rem along with this program; if not, write to the Free Software
  18. Rem Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  
  20.  
  21.  
  22. Set Buffer 160 : On Error Goto TERROR : Break Off 
  23. Hide : BEEP=20 : LF$=Chr$(10) : PR$="PRT:"
  24. FCH$="LOTTO CHECK (C) 1994  Lorence Lombardo."
  25. FCH2$="LOTTO CHECK (C) 1997  Lorence Lombardo."
  26. Rem **********D( T ,N, L )**** ticket,number,line **** 
  27. Rem NX=system       GT= Games/ticket 
  28. TMX=100 : Dim D(TMX+1,25,12),X$(TMX+1),NX(TMX+1),GT(TMX+1),N(20),R(25),WN(25,12),WL(12),NC(45),WT(TMX),WTL(TMX,12)
  29.  
  30. Gosub CSCREEN : MD$="" : SC=1 : Z1=0 : V=0 : N$="LC-DEF.DAT" : ST=1
  31. Gosub TLD : If ST=2 Then ST=0 : P$="O" : Goto OPTIONS
  32. TTOP:
  33. ST=0 : R$="" : For NN=1 To 8 : N(NN)=0 : Next : NR=0 : M=0 : D=0 : B$=""
  34. Gosub TITLE : Locate ,7 : Paper 6 : Pen 0
  35. Print "  Enter 'O` for options & 'Q` to quit.  " : Paper 0 : Pen 2
  36. Wind Open 1,0,75,40,18 : Window 1
  37. Do 
  38.    Inc NR : G=NR : N1$="  LOTTO " : If MD$="4" Then N1$="  KENO "
  39.    If NR>6 and MD$<>"4" Then R$="SUPPLEMENTARY " : G=NR-6
  40.    GN$=Str$(G) : If MD$="2" and NR=6 Then GN$="" : R$="POWER-BALL "
  41.    NR$=N1$+R$+"NUMBER"+GN$+" IS "
  42.    TASK:
  43.    NRCH=0 : Print NR$; : Input P$ : Print 
  44.    N(NR)=Val(P$) : If Upper$(P$)="O" Then P$="O" : Wind Close : Goto OPTIONS
  45.    If Upper$(P$)="Q" Then End 
  46.    If MD$="1" and N(7)=0 and NR=7 Then NR=6 : Exit 
  47.    If N(NR)<1 or N(NR)>GDMX
  48.       Bell 20 : Pen 4 : Print " 1 TO";GDMX;" ONLY MATE !!!" : Pen 2
  49.       Print : Goto TASK
  50.    End If 
  51.    If MD$="2" and NR<6 Then Gosub NCHECK
  52.    If MD$<>"2" Then Gosub NCHECK
  53.    If NRCH=1 Then Bell 20 : Pen 4 : Print " YOU'VE ALREADY GOT THIS NUMBER MATE !!!" : Print : Pen 2 : Goto TASK
  54.    If MD$="1" and NR=8 Then Exit 
  55.    If MD$="2" and NR=6 Then Exit 
  56.    If MD$="3" and NR=7 Then Exit 
  57.    If MD$="4" and NR=20 Then Exit 
  58. Loop 
  59. If MD$="4"
  60.    Screen Open 0,640,220,8,Hires : Gosub PAL : Gosub TITLE2
  61.    Wind Open 1,0,20,80,18 : Window 1
  62. End If 
  63. Gosub NUMS : Curs Off : Pen 7 : Print "ARE YOU SURE THESE NUMBERS ARE CORRECT ?                (Y/N/O)" : Pen 2
  64. Do : B$=Upper$(Inkey$) : If B$="N" Then Goto TTOP
  65.    If B$="Y" Then Wind Close : Goto TSHOW
  66.    If B$="O" Then Show : Goto OPTIONS
  67.    If B$="Q" Then End 
  68. Loop 
  69. NCHECK:
  70. For I=1 To NR : If I<>NR and N(NR)=N(I) Then NRCH=1
  71. Next I : Return 
  72.  
  73. CSCREEN:
  74. LC=200 : LCC=25 : Screen Open 0,320,230,8,LORES
  75. PAL:
  76. Palette $FFF,$FFF,0,,,$C0,,$C0E : Curs Off : Colour Back $FFF
  77. Gosub PALCHECK : Return 
  78. Rem **************************** CHECKER **************************
  79. TSHOW: T=0
  80. Do : Inc T
  81.    If V=17 Then Locate ,25 : Cline : Pen 4 : Centre "Scaning tickets"
  82.    TTSHOW:
  83.    SUSS=NX(T) : Gosub SYSUSS
  84.    If V<>17
  85.       SP=4 : SP$=" " : If MD$="1" or MD$="3" : Gosub MD1SC : End If 
  86.       If MD$="2" : Gosub MD2SC : End If 
  87.       Gosub NUMS : Pen 2
  88.       Centre X$(T)+SYS$+" ticket"+Str$(T) : Print : Print 
  89.       If MD$="1" or MD$="3" : Pen 4 : Print Space$(NX(T)*SP+7);"No's "+Pen$(5); : End If 
  90.       If MD$="2"
  91.          Pen 7 : Print Space$(NX(T)*SP+2);"PB";
  92.          If NX(T)<23 : Pen 4 : Print "    No's"; : End If 
  93.       End If 
  94.       If MD$="4" : Pen 5 : Print Space$(48);"Spot"+Pen$(4)+"    No's" : End If 
  95.       If NR=8 or NR=7 : Print "Sup" : End If 
  96.       If NR=6 : Print : End If : Print 
  97.    End If 
  98.    ANAL: WW=0
  99.    For L=1 To GT(T) : Pen 6
  100.       If V<>17 Then Print " ";Chr$(64+L);" "; : Pen 2
  101.       For N=1 To NX(T) : WN(N,L)=0
  102.          If MD$="1" or MD$="3" Then Gosub MD1
  103.          If MD$="2" Then Gosub MD2
  104.          If MD$="4" Then M4=D(T,11,L) : If N<=M4 Then Gosub MD4
  105.          If V<>17
  106.             If MD$="4"
  107.                SP$=" " : If D(T,N,L)=0 : SP$="-" : End If 
  108.             End If 
  109.             If D(T,N,L)<10 : Print " "; : End If 
  110.             If D(T,N,L)>0 : Print SP$;D(T,N,L); : Pen 2 : End If 
  111.             If D(T,N,L)=0 : Print "  ";SP$; : End If 
  112.             If MD$="2" and N=NX(T)-1 : Pen 7 : Print " "; : End If 
  113.             If MD$="4" and N=NX(T)-1 : Pen 5 : Print "   -"; : End If 
  114.          End If 
  115.       Next N
  116.       WL(L)=0 : If MD$="1" or MD$="3" Then Gosub MD1CHK
  117.       If MD$="2" Then Gosub MD2CHK
  118.       If MD$="4" Then Gosub MD4CHK
  119.       If V<>17 and WL(L)=1
  120.          Pen 3
  121.          If NX(T)<23 : Print " "; : Paper 2 : Print " $$ "; : Paper 0 : End If 
  122.          XXX=X Curs : Locate 1, : Print Chr$(64+L); : Locate XXX,
  123.       Else 
  124.          If V<>17
  125.             If NX(T)<23 : Print "     "; : End If 
  126.          End If 
  127.       End If 
  128.       If V<>17
  129.          If M=0 and MD$<>"2" : Print "  "; : End If 
  130.          If M>0 and NX(T)<23 : Pen 4 : Print M; : End If 
  131.          If D>0 and MD$<>"2" : Pen 5 : Print "  ";D; : End If 
  132.          Pen 2 : Print 
  133.       End If : M=0 : D=0
  134.    Next L
  135.    If WW=1 and V<>17
  136.       Locate 4,4 : Paper 3 : Pen 5 : Print " WINNER !!! " : Paper 0 : TTT=T
  137.       For W=1 To 10 : Bell 40 : Wait PS : Next W
  138.    End If 
  139.    If Z$="-" and V=17 and WW=0
  140.       If T>1 : Dec T : Goto TTSHOW : End If 
  141.       If T=1 : Z$="" : V=99 : T=TTT : Bell : Locate ,25 : Cline : End If 
  142.    End If 
  143.    If V<>17
  144.       Locate ,20 : Centre Pen$(7)+"- "+Pen$(2)+"previous  "+Pen$(7)+"Space "+Pen$(2)+"next"
  145.       Locate ,21 : Centre Pen$(7)+"R "+Pen$(2)+"reset  "+Pen$(7)+"F "+Pen$(2)+"first  "+Pen$(7)+"L "+Pen$(2)+"last"
  146.       Locate ,22 : Centre Pen$(7)+"G "+Pen$(2)+"goto  "+Pen$(7)+"P "+Pen$(2)+"print wins  "+Pen$(7)+"Q "+Pen$(2)+"quit"
  147.    End If 
  148.    If V=17 or V=99
  149.       If T=TT
  150.          If WW=0 or V=99
  151.             Pen 4 : Locate ,25 : Bell : Centre "All tickets scanned."
  152.          End If 
  153.          If WW=0 : T=TTT : V=99 : End If 
  154.       End If 
  155.    End If 
  156.    Do 
  157.       If V=17 Then Exit 
  158.       Z$=Upper$(Inkey$) : If Z$=" " and T<TT Then Exit 
  159.       If Z$="-" and T>1
  160.          If V=99 : V=17 : End If 
  161.          If V=17 : Locate ,25 : Pen 4 : Cline : Centre "Back scan" : End If 
  162.          Dec T : Goto TTSHOW
  163.       End If 
  164.       If Z$="F" and T>1
  165.          If V=99 : V=17 : End If 
  166.          Goto TSHOW
  167.       End If 
  168.       If Z$="L" and T<TT Then T=TT : Goto TTSHOW
  169.       If Z$="R" or Scancode=69 Then V=0 : SC=1 : Gosub CSCREEN : Goto TTOP
  170.       If Z$="P" and WW=1 Then Gosub WPRINT
  171.       If Z$="G"
  172.          If V=17 : V=99 : End If 
  173.          Gosub TGOTO : If TTG=0 : Goto TTSHOW : End If 
  174.       End If 
  175.       If Z$="Q" Then End 
  176.    Loop : If V=17 and WW=1 Then V=99 : Goto TTSHOW
  177.    If V=99 Then V=17
  178. Loop 
  179. NUMS:
  180. Pen 4 : Clw : For NN=1 To NR
  181.    If MD$<>"4" and NN>6 Then Pen 5
  182.    If MD$="2" and NN=NR Then Pen 5
  183.    Print N(NN); : If MD$<>"4" and NN<NR Then Print " -";
  184. Next : Print : Print : Return 
  185.  
  186. MD1:
  187. For NN=1 To NR
  188.    If N(NN)=D(T,N,L) and NN<7 Then Pen 4 : Inc M : WN(N,L)=1
  189.    If N(NN)=D(T,N,L) and NN>6 Then Pen 5 : Inc D : WN(N,L)=2
  190. Next NN : Return 
  191. MD1CHK:
  192. MM=M : If NX(T)<6 Then MM=M+6-NX(T)
  193. If NR=8 or NR=7 Then If MM=3 and D>0 or MM>3 Then WW=1 : WL(L)=1
  194. If NR=6 and MM=6 Then WW=1 : WL(L)=1
  195. Return 
  196. MD1SC:
  197. If NX(T)>6 and NX(T)<9 or NX(T)>15 Then SP$="" : SP=3
  198. If NX(T)>8 and SC<>2 Then SC=2 : Screen Open 0,640,220,8,Hires : Gosub PAL
  199. If NX(T)<9 and SC<>1 Then SC=1 : Gosub CSCREEN
  200. Return 
  201.  
  202. MD2:
  203. For NN=1 To NR
  204.    If N(NN)=D(T,N,L) and N<>NX(T) and NN<>NR Then Pen 4 : Inc M : WN(N,L)=1
  205.    If N(NN)=D(T,N,L) and N=NX(T) and NN=NR Then Pen 5 : Inc D : WN(N,L)=1
  206. Next NN : Return 
  207. MD2CHK:
  208. MM=M : If NX(T)<6 Then MM=M+6-NX(T)
  209. If MM=2 and D>0 or MM>2 Then WW=1 : WL(L)=1
  210. Return 
  211. MD2SC:
  212. If NX(T)>6 and NX(T)<10 or NX(T)>16 Then SP$="" : SP=3
  213. If NX(T)>9 and SC<>2 Then SC=2 : Screen Open 0,640,220,8,Hires : Gosub PAL
  214. If NX(T)<10 and SC<>1 Then SC=1 : Gosub CSCREEN
  215. Return 
  216.  
  217. MD4:
  218. For NN=1 To NR
  219.    If N(NN)=D(T,N,L) Then Pen 4 : Inc M : WN(N,L)=1
  220. Next NN : Return 
  221. MD4CHK:
  222. If M4=10 Then If M=0 or M>6 Then WW=1 : WL(L)=1
  223. If M4=9 or M4=8 Then If M>5 Then WW=1 : WL(L)=1
  224. If M4=7 or M4=6 Then If M>4 Then WW=1 : WL(L)=1
  225. If M4=5 and M>3 Then WW=1 : WL(L)=1
  226. If M4=4 and M>2 Then WW=1 : WL(L)=1
  227. If M4=3 and M>1 Then WW=1 : WL(L)=1
  228. Return 
  229.  
  230. SYSUSS:
  231. SYS$=" standard" : SY=0 : If MD$="2" Then SY=1
  232. SY$=Str$(SUSS-SY) : If MD$<>"2" and SUSS<6 Then SYS$=" take"+SY$
  233. If MD$<>"2" and SUSS>6 Then SYS$=" system"+SY$
  234. If MD$="2" and SUSS<>6 Then SYS$=" PowerPlay"+SY$
  235. If MD$="4" Then SYS$=" keno"
  236. Return 
  237. TITLE:
  238. Unpack 7 To 0 : Gosub PALCHECK : Flash 3,"(FF0,10)(FFF,7)(000,7)" : Return 
  239. Rem  Use pica 60 font for text.
  240. Rem ********************************* WIN PRINT *****************************  
  241. WPRINT:
  242. Locate ,25 : Gosub PRCHECK : If PR<>252 Then Return 
  243. Open Out 1,PR$
  244. Print #1,X$(T);SYS$;" ticket";T;LF$;
  245. SPP$=" " : If NX(T)=20 Then SPP$=""
  246. For L=1 To GT(T)
  247.    If WL(L)=1
  248.       Print #1,"  ";Chr$(64+L);"  ";
  249.       For N=1 To NX(T)
  250.          If WN(N,L)=0 : WP$=" --" : End If 
  251.          If MD$="4" and N>D(T,11,L) : WP$="   " : End If 
  252.          If WN(N,L)>0
  253.             If D(T,N,L)<10 : WP$=" "+Str$(D(T,N,L)) : End If 
  254.             If D(T,N,L)>9 : WP$=Str$(D(T,N,L)) : End If 
  255.          End If 
  256.          Print #1,WP$;SPP$;
  257.          If MD$="2" and N=NX(T)-1 : Print #1,"  PB"; : End If 
  258.          If MD$="4" and N=NX(T)-1 : Print #1,"  Spot";D(T,11,L); : End If 
  259.       Next N : Print #1,LF$;"     ";
  260.       For N=1 To NX(T)
  261.          If WN(N,L)=2 : Print #1," ~~";SPP$;
  262.          Else Print #1,"   ";SPP$;
  263.          End If 
  264.       Next N : Print #1,LF$;
  265.    End If 
  266. Next L : Print #1,LF$; : Close 1 : Cline : Bell : Return 
  267. Rem **************************** OPTIONS ************************************    
  268. OPTIONS:
  269. Gosub TITLE : Curs Off : Pen 6 : Inverse On : Locate ,7
  270. Print "             OPTIONS MENU               " : Print : Inverse Off 
  271. Locate 7,10 : Pen 4 : Print "L "; : Pen 2 : Print "Load a new data file"
  272. Locate 7,12 : Pen 4 : Print "E "; : Pen 2 : Print "Ticket editor"
  273. Locate 7,14 : Pen 4 : Print "R "; : Pen 2 : Print "Create random tickets"
  274. Locate 7,16 : Pen 4 : Print "C "; : Pen 2 : Print "Return to checker"
  275. Locate 7,18 : Pen 4 : Print "W "; : Pen 2 : Print "Show winning tickets only"
  276. Locate 7,21 : Pen 7 : Print "A "; : Pen 2 : Print "About";
  277. Pen 7 : Print "   Q "; : Pen 2 : Print "Quit"
  278. Do : V$=Inkey$ : V=Scancode
  279.    If V=18 Then Goto TSCREEN
  280.    If V=40 Then Gosub TL1 : Cline : If N$<>"" Then Goto SUSS
  281.    If Upper$(V$)="R" Then Goto TRANDOM : Rem V=19 
  282.    If V=51 or V=69 or V=17 Then Goto SUSS
  283.    If V=16 Then End 
  284.    If V=32 Then Goto ABOUT
  285. Loop 
  286. SUSS:
  287. If N$="" and V=40 Then Goto OPTIONS
  288. ER$="check..!!"
  289. If TT=0
  290.    Bell 20 : Cls : Locate ,14 : Pen 4 : Centre "Nothing to "+ER$
  291.    Wait 150 : Goto OPTIONS
  292. End If 
  293. If P$="O" Then P$="" : Goto TTOP
  294. If B$="O" Then B$="" : Goto TSHOW
  295. Rem ****************************** RANDOM ********************************** 
  296. TRANDOM:
  297. If MD$="" Then MD$="1" : Gosub TLIMITS
  298. Wind Open 1,0,208,30,1 : Window 1
  299. Pen 7 : Input "  How many tickets ? ";GG : Wind Close : Locate ,25 : Pen 4
  300. If GG>TMX Then Bell 20 : Centre "No more than"+Str$(TMX) : Goto TRANDOM
  301. If GG<1 Then Goto OPTIONS
  302. Cline : Centre "Creating tickets." : Gosub TEDIT : TT=GG
  303. For T=1 To TT : GT(T)=GPT : NX(T)=6 : Gosub TTRND : Next T
  304. Bell : Goto TSCREEN
  305. TTRND:
  306. X$(T)="RANDOM" : For L=1 To GT(T) : Gosub RGAME : Next L : Return 
  307. RGAME:
  308. RMX=NX(T) : If MD$="4" Then RMX=D(T,11,L) : If RMX<3 Then RMX=3 : D(T,11,L)=3
  309. For R=1 To RMX
  310.    TRND:
  311.    RDCH=0 : Randomize Timer : R(R)=Rnd(GDMX-1)+1
  312.    If MD$="2" and R<>NX(T) Then Gosub RDCHECK
  313.    If MD$<>"2" Then Gosub RDCHECK
  314.    If RDCH=1 Then Goto TRND
  315. Next R : Gosub RSORT : Return 
  316. RDCHECK:
  317. For S=1 To R : If S<>R and R(R)=R(S) Then RDCH=1
  318. Next S : Return 
  319. Rem ****************************** EDITOR ********************************** 
  320. TEDIT:
  321. For T=1 To TT : TZ=T : Gosub TZERO : GT(T)=0 : NX(T)=0 : Next T
  322. If Z1=40 or V=40 Then Return 
  323. N=1 : L=1 : TT=0 : If V=19 Then Return 
  324. TSCREEN:
  325. If MD$="" Then MD$="1"
  326. Screen Open 0,640,220,8,Hires : Palette $FFF,$FFF,0,,,$E0,,$C0E
  327. Gosub PALCHECK : Colour Back $FFF : Flash 3,"(f00,15)(fff,10)" : Curs Off 
  328. If V=32 Then Goto TITLE2
  329. Z4=0 : T=1 : LC=8 : LCC=1 : Gosub LAYOUT : Gosub TICKET
  330. MAIN:
  331. A$=Upper$(Inkey$) : Z=Asc(A$) : Z1=Scancode : Z2=Key Shift
  332. V=0 : Z3=0 : If Z2=16 or Z2=32 or Z2=20 or Z2=36 Then Z3=1
  333. If Z2=8 or Z2=12 Then Z3=2
  334. If A$="_" Then A$="-"
  335. If A$="=" Then A$="+"
  336. If Z3=1 and Z4=2 and MD$<>"2" Then Gosub BLANK : Gosub ALT
  337. If Z3=2 and Z4=1 and MD$<>"2" Then Gosub BLANK : Gosub CTRL
  338. If Z1>75 and Z1<80 : Gosub DCHECK : Rem *** AN ARROW *** 
  339.    If DCH=0
  340.       C$="-"
  341.       If MD$="2" or MD$="4"
  342.          If N=NX(T) : C$="=" : End If 
  343.       End If 
  344.       C=6 : Gosub POSY
  345.       
  346.       If Z1=77 : Inc L : End If : If L>GT(T) : L=1 : End If : Rem ** V **  
  347.       
  348.       If Z1=76 : Dec L : End If : If L<1 : L=GT(T) : End If : Rem ** ^ **  
  349.       
  350.       If Z1=78 : Inc N : End If : If N>NX(T) : N=1 : End If : Rem ** > **    
  351.       If MD$="4" and N>D(T,11,L) : N=11 : End If 
  352.       
  353.       If Z1=79 : Rem                                              ** < ** 
  354.          If MD$="4" and N=11
  355.             N=D(T,11,L)
  356.          Else 
  357.             Dec N
  358.          End If 
  359.       End If 
  360.       If N<1 : N=NX(T) : End If 
  361.    End If 
  362.    
  363. End If 
  364. If Z>47 and Z<58 : Y=0 : Rem *** A NUMBER *** 
  365.    If D(T,N,L)>0
  366.       X=-2 : C$=Str$(D(T,N,L))+A$
  367.       NVL=GDMX+1 : If MD$="4" and N=11 : NVL=11 : End If 
  368.       If Val(C$)<NVL : Gosub NUM : D(T,N,L)=Val(C$) : End If 
  369.    End If 
  370.    If D(T,N,L)=0 : D(T,N,L)=Val(A$) : C$=A$
  371.       If D(T,N,L)>0 : Gosub NUM : End If 
  372.    End If 
  373. End If 
  374. If Z1=70 or Z1=65 : Rem *** DELETE *** 
  375.    Y=0 : C=2 : If D(T,N,L)<10 : C$=" " : Gosub NUM : D(T,N,L)=0 : End If 
  376.    If D(T,N,L)>9 : C$=" "+Left$(Str$(D(T,N,L)),2) : X=-2
  377.       Gosub NUM : D(T,N,L)=Val(C$)
  378.    End If 
  379. End If 
  380. If A$="+" and T<TMX : Gosub DCHECK : Gosub CHECK
  381.    If DCH=0 and CH>0 : D$=X$(T) : Inc T
  382.       If X$(T)="" and T>TT : X$(T)=D$ : End If : Gosub LAYOUT : Gosub TICKET
  383.    End If 
  384. End If 
  385. If TT<T Then TT=T
  386. If A$="-" and T>1 Then Gosub DCHECK : If DCH=0 Then Dec T : Gosub LAYOUT : Gosub TICKET
  387. If A$="Q"
  388.    Locate ,1 : Centre Pen$(4)+"Are you sure you want to quit?  (Y/N)"
  389.    Gosub CONFIRM : If E$="Y" : End : End If 
  390. End If 
  391. If Z=13 Then Goto NAME
  392. If Z3=1 and Z1=33 Then Goto TSAVE
  393. If Z3=1 and Z1=40 Then Goto TLOAD
  394. If Z3=1 and Z1=50 Then TZ=0 : Gosub TZERO : TA=0 : TB=T : Gosub TCOPY : Bell 
  395. If Z3=1 and Z1=53
  396.    TZ=T : Gosub TZERO : TA=T : TB=0 : Gosub TCOPY
  397.    Gosub LAYOUT : Gosub TICKET
  398. End If 
  399. If Z3=1 and Z1=17
  400.    TZ=TMX+1 : Gosub TZERO : TA=TZ : TB=0 : Gosub TCOPY
  401.    TZ=0 : Gosub TZERO : TA=0 : TB=T : Gosub TCOPY
  402.    TZ=T : Gosub TZERO : TA=T : TB=TMX+1 : Gosub TCOPY
  403.    Gosub LAYOUT : Gosub TICKET
  404. End If 
  405. If Z3=1 and Z1=54
  406.    Gosub CHECK : Locate ,1
  407.    If TT=1 and CH>0 or TT>1
  408.       Centre Pen$(4)+"All existing data will be lost. Continue ?  (Y/N)"
  409.       Gosub CONFIRM : If E$="N" : Goto MAIN : End If 
  410.    End If : NC=0 : Goto TEDIT
  411. End If 
  412. If Z3=1 and Z1=19
  413.    Locate ,1 : Pen 4 : Centre "Creating random ticket."
  414.    Gosub TTRND : Gosub LAYOUT : Gosub TICKET
  415. End If 
  416. If A$="F" and T>1 Then T=1 : Gosub LAYOUT : Gosub TICKET
  417. If A$="L" and T<TT
  418.    TTT=T : T=TT : Gosub CHECK
  419.    If CH=0 : Dec T : End If 
  420.    If TTT<>T : Gosub LAYOUT : Gosub TICKET : End If 
  421. End If 
  422. If A$="G" and Z3=0 Then Goto TGOTO
  423. If Z3=1 and Z1=25 Then Gosub CHECK : If CH>0 Then Goto TPRT
  424. If Z3=1 and Z1=49 Then TZ=T : Gosub TZERO : Gosub LAYOUT
  425. If Z3=1 and Z1=39 Then Goto TERASE
  426. If Z3=1 and Z1=23 Then Goto TINSERT
  427. If Z3=1 and Z1=32 Then Goto TPRINT
  428. If A$="S" and Z3=0 Then Goto TSORT
  429. If Z3=2 and Z1=24 or Z1=69 : Gosub DCHECK
  430.    If DCH=0 : T=TT : Gosub CHECK
  431.       If CH=0 : Dec TT : End If : Gosub CSCREEN : Goto OPTIONS
  432.    End If 
  433. End If 
  434. If Z3=2 and Z1=55
  435.    Gosub CHECK : Locate ,1
  436.    If TT=1 and CH>0 or TT>1
  437.       Centre Pen$(4)+"Changing mode will clear all data. Continue ?  (Y/N)"
  438.       Gosub CONFIRM : If E$="N" : Goto MAIN : End If 
  439.    End If : NC=0 : Locate ,1
  440.    Centre Pen$(6)+"Select mode. ("+Pen$(4)+"P"+Pen$(6)+"ools/"+Pen$(4)+"L"+Pen$(6)+"otto/Power"+Pen$(4)+"B"+Pen$(6)+"all/"+Pen$(4)+"K"+Pen$(6)+"eno)"
  441.    Do : E$=Upper$(Inkey$)
  442.       If E$="P" or E$="L" or E$="B" or E$="K" : Cline : Exit : End If 
  443.    Loop 
  444.    If E$="L" : MD$="1" : End If 
  445.    If E$="B" : MD$="2" : End If 
  446.    If E$="P" : MD$="3" : End If 
  447.    If E$="K" : MD$="4" : End If 
  448.    Goto TEDIT
  449. End If 
  450. If Z3=2 and Z1=19 Then Y=0 : C=2 : NN=N : Gosub RGAME : Gosub LIN : N=NN
  451. If Z3=2 and Z1=36 Then Goto GMTT
  452. If Z3=2 and Z1=33 and MD$<>"4" Then Goto TSYSTEM
  453. If Z3=2 and Z1=49
  454.    TZ=T : LL=L : Gosub GZERO : NN=N : Y=0 : C=2 : Gosub LIN : N=NN
  455. End If 
  456. If Z3=2 and Z1=25
  457.    GCH=0 : For NN=1 To NX(T) : If D(T,NN,L)>0 : GCH=1 : End If : Next NN
  458.    If GCH=1 : Goto TPRT : End If 
  459. End If 
  460. If Z3=2 and Z1=50
  461.    TZ=0 : LL=0 : Gosub GZERO : LB=L : TA=0 : TB=T : NC=NX(T)
  462.    Gosub GCOPY : Bell 
  463. End If 
  464. If Z3=2 and Z1=53
  465.    TZ=T : LL=L : Gosub GZERO : TA=T : TB=0 : LB=0 : NC=NX(T)
  466.    Gosub GCOPY : NN=N : Y=0 : C=2 : Gosub LIN : N=NN
  467. End If 
  468. If Z3=2 and Z1=17
  469.    NC=NX(T) : TA=T : LL=0 : TB=T : LB=L : Gosub GCOPY : TZ=T : LL=L
  470.    Gosub GZERO : TB=0 : LB=0 : Gosub GCOPY : TZ=0 : LL=0 : Gosub GZERO
  471.    TB=T : TA=0 : Gosub GCOPY : TZ=T : Gosub GZERO
  472.    NN=N : Y=0 : C=2 : Gosub LIN : N=NN
  473. End If 
  474. If Z3=2 and Z1=39 Then Goto GERASE
  475. If Z3=2 and Z1=23 and GT(T)<GPT Then Goto GINSERT
  476. Rem *************************
  477. If MD$="4" and D(T,11,L)<3 Then N=11
  478. C=3 : C$="^" : X=0 : Y=1 : Gosub POSY : Goto MAIN
  479. NUM:
  480. C=2 : If MD$="2" and N=NX(T) Then C=4
  481. If MD$="4" and N=NX(T) Then C=5
  482. POSY:
  483. Locate X+(N*3),Y+(L*2) : Pen C : Print C$ : Return 
  484.  
  485. TLIMITS:
  486. If NX(T)=0 Then NX(T)=6
  487. If MD$="1" or MD$="2" Then GDMX=45
  488. If MD$="3" Then GDMX=38
  489. If MD$="4" Then GDMX=80 : NX(T)=11 : GPT=5
  490. If MD$="1" or MD$="3" Then GPT=12
  491. If MD$="2" Then GPT=6
  492. If GT(T)=0 Then GT(T)=GPT
  493. Return 
  494.  
  495. LAYOUT:
  496. Gosub TLIMITS : Cls : Pen 7 : Inverse On 
  497. Print "          LOTTO TICKET EDITOR  Version 2.0  (C) 1997  Lorence Lombardo         " : Inverse Off 
  498. Print : For K=1 To GT(T) : Pen 5 : Print Chr$(64+K)
  499.    Pen 6 : Print " "; : For KK=1 To NX(T) : QQ$=" --"
  500.       If MD$="2" or MD$="4" Then If KK=NX(T) Then QQ$=" =="
  501.    Print QQ$; : Next KK
  502. Print : Next K : Pen 2
  503. If MD$="1" or MD$="3" or MD$="4" Then Gosub TLAYOUT
  504. If MD$="2" Then Gosub PBLAYOUT
  505. Return 
  506.  
  507. TLAYOUT:
  508. If MD$="1" Then MDN$="Lotto"
  509. If MD$="3" Then MDN$="Pools"
  510. If MD$="4" Then MDN$="Keno"
  511. Locate 62,2 : Print MDN$;" ticket";T : Pen 4 : Locate 63,3 : Print "NAME: "; : Pen 6 : Print X$(T)
  512. Locate 63,4 : Pen 4 : Print "TYPE:"; : Pen 6 : SUSS=NX(T) : Gosub SYSUSS : Print SYS$
  513. Locate 63,5 : Pen 4 : Print "GAMES:"; : Pen 6 : Print GT(T)
  514. Locate 62,6 : Pen 5 : Paper 2 : Print "  KEY   COMMANDS  " : Paper 0
  515. Locate 62,7 : Pen 5 : Print "+ "; : Pen 2 : Print "next "; : Pen 5 : Print "- "; : Pen 2 : Print "previous" : Pen 5
  516. Locate 62,8 : Pen 5 : Print "F "; : Pen 2 : Print "first "; : Pen 5 : Print "L "; : Pen 2 : Print "last"; : Pen 5
  517. Locate 62,9 : Print "G "; : Pen 2 : Print "goto"; : Pen 5 : Print " Del "; : Pen 2 : Print "del # "; : Pen 5
  518. Locate 62,10 : Print "S"; : Pen 2 : Print " sort "; : Pen 5 : Print "Enter "; : Pen 2 : Print "name ";
  519. Locate 62,11 : Pen 5 : Print "Arws "; : Pen 2 : Print "curs "; : Pen 5 : Print "Q "; : Pen 2 : Print "quit"
  520. If Z4<2 Then Gosub ALT Else Gosub CTRL
  521. Return 
  522. ALT:
  523. Locate 62,13 : Pen 4 : Print "[ALT] KEYS:- " : Pen 5 : Z4=1
  524. Locate 62,14 : Print "L "; : Pen 2 : Print "load "; : Pen 5 : Print "S "; : Pen 2 : Print "save" : Pen 5
  525. Locate 62,15 : Print "N "; : Pen 2 : Print "new "; : Pen 5 : Print "A "; : Pen 2 : Print "print all"
  526. Locate 62,16 : Pen 7 : Print "Ticket:-" : B2$="[Ctrl]" : Gosub FUNS : Return 
  527. CTRL:
  528. Locate 62,13 : Pen 4 : Print "[CTRL] KEYS:-" : Pen 5 : Z4=2
  529. Locate 62,14 : If MD$<>"4" Then Print "S "; : Pen 2 : Print "system ";
  530. Pen 5 : Print "G "; : Pen 2 : Print "games" : Pen 5
  531. Locate 62,15 : Print "O "; : Pen 2 : Print "options "; : Pen 5 : Print "M "; : Pen 2 : Print "mode"
  532. Locate 62,16 : Pen 7 : Print "Game:-" : B2$="[Alt]" : Gosub FUNS : Return 
  533. FUNS:
  534. Locate 62,17 : Pen 5 : Print "X "; : Pen 2 : Print "copy "; : Pen 5 : Print "B "; : Pen 2 : Print "paste" : Pen 5
  535. Locate 62,18 : Print "W "; : Pen 2 : Print "swap "; : Pen 5 : Print "P "; : Pen 2 : Print "print" : Pen 5
  536. Locate 62,19 : Print "Z "; : Pen 2 : Print "zero "; : Pen 5 : Print "R "; : Pen 2 : Print "random" : Pen 5
  537. Locate 62,20 : Print "K "; : Pen 2 : Print "kill "; : Pen 5 : Print "I "; : Pen 2 : Print "insert"
  538. Locate 62,22 : Pen 6 : Print "Press "; : Pen 4 : Print B2$; : Pen 6 : Print " for "
  539. Locate 62,23 : Print " more fuctions." : Return 
  540. BLANK:
  541. For B1=1 To 4 : Locate 62,12+B1 : Print Space$(18) : Next B1 : Return 
  542.  
  543. PBLAYOUT:
  544. Locate 31,15 : Pen 6 : Inverse On : Print " PowerBall mode " : Inverse Off 
  545. PBX=11 : Locate 35,17 : Pen 2 : Print "Ticket";T
  546.  
  547. Locate PBX,17 : Pen 4 : Print "NAME: "; : Pen 6 : Print X$(T)
  548. Locate PBX,18 : Pen 4 : Print "TYPE:"; : Pen 6 : SUSS=NX(T) : Gosub SYSUSS : Print SYS$
  549. Locate PBX,19 : Pen 4 : Print "GAMES:"; : Pen 6 : Print GT(T)
  550. Locate PBX,20 : Pen 5 : Paper 2 : Print "  KEY   COMMANDS  " : Paper 0
  551. Locate PBX,21 : Pen 5 : Print "+ "; : Pen 2 : Print "next "; : Pen 5 : Print "- "; : Pen 2 : Print "previous" : Pen 5
  552. Locate PBX,22 : Pen 5 : Print "F "; : Pen 2 : Print "first "; : Pen 5 : Print "L "; : Pen 2 : Print "last"; : Pen 5
  553. Locate PBX,23 : Print "G "; : Pen 2 : Print "goto"; : Pen 5 : Print " Del "; : Pen 2 : Print "del # "; : Pen 5
  554. Locate PBX,24 : Print "S"; : Pen 2 : Print " sort "; : Pen 5 : Print "Enter "; : Pen 2 : Print "name ";
  555. Locate PBX,25 : Pen 5 : Print "Arws "; : Pen 2 : Print "curs "; : Pen 5 : Print "Q "; : Pen 2 : Print "quit"
  556.  
  557. Locate PBX+20,18 : Pen 4 : Print "[ALT] KEYS:- "
  558. Locate PBX+20,19 : Pen 5 : Print "L "; : Pen 2 : Print "load "; : Pen 5 : Print "S "; : Pen 2 : Print "save"
  559. Locate PBX+20,20 : Pen 5 : Print "N "; : Pen 2 : Print "new "; : Pen 5 : Print "A "; : Pen 2 : Print "print all"
  560. Locate PBX+20,21 : Pen 7 : Print "Ticket:-"
  561. Locate PBX+20,22 : Pen 5 : Print "X "; : Pen 2 : Print "copy "; : Pen 5 : Print "B "; : Pen 2 : Print "paste" : Pen 5
  562. Locate PBX+20,23 : Print "W "; : Pen 2 : Print "swap "; : Pen 5 : Print "P "; : Pen 2 : Print "print" : Pen 5
  563. Locate PBX+20,24 : Print "Z "; : Pen 2 : Print "zero "; : Pen 5 : Print "R "; : Pen 2 : Print "random" : Pen 5
  564. Locate PBX+20,25 : Print "K "; : Pen 2 : Print "kill "; : Pen 5 : Print "I "; : Pen 2 : Print "insert"
  565.  
  566. Locate PBX+40,18 : Pen 4 : Print "[CTRL] KEYS:-" : Pen 5 : Z4=2
  567. Locate PBX+40,19 : Print "S "; : Pen 2 : Print "system"; : Pen 5 : Print " G "; : Pen 2 : Print "games" : Pen 5
  568. Locate PBX+40,20 : Print "O "; : Pen 2 : Print "options "; : Pen 5 : Print "M "; : Pen 2 : Print "mode"
  569. Locate PBX+40,21 : Pen 7 : Print "Game:-"
  570. Locate PBX+40,22 : Pen 5 : Print "X "; : Pen 2 : Print "copy "; : Pen 5 : Print "B "; : Pen 2 : Print "paste" : Pen 5
  571. Locate PBX+40,23 : Print "W "; : Pen 2 : Print "swap "; : Pen 5 : Print "P "; : Pen 2 : Print "print" : Pen 5
  572. Locate PBX+40,24 : Print "Z "; : Pen 2 : Print "zero "; : Pen 5 : Print "R "; : Pen 2 : Print "random" : Pen 5
  573. Locate PBX+40,25 : Print "K "; : Pen 2 : Print "kill "; : Pen 5 : Print "I "; : Pen 2 : Print "insert"
  574. Return 
  575.  
  576. DCHECK:
  577. Locate ,1 : Cline : DCH=0 : Pen 4
  578. If MD$="4" and N=NX(T)
  579.    M4=D(T,11,L) : If M4=0 and A$="-" : Return : End If 
  580.    If M4<3 : DCH=1 : Bell 20 : Centre "Invalid spot number." : End If 
  581.    If M4>2 and M4<10
  582.       For NN=M4+1 To 10 : D(T,NN,L)=0 : Next 
  583.       NN=N : Y=0 : Gosub LIN : N=NN : Y=1 : X=0
  584.    End If 
  585.    Return 
  586. Else 
  587.    If D(T,N,L)=0 : Return : End If 
  588. End If 
  589. If MD$="2" and N=NX(T) Then Return 
  590. NXT=NX(T) : If MD$="2" or MD$="4" Then NXT=NX(T)-1
  591. For NCH=1 To NXT : If N<>NCH and D(T,N,L)=D(T,NCH,L) Then DCH=1
  592. Next NCH : If DCH=1 Then Bell 20 : Centre "Duplicate number."
  593. Return 
  594.  
  595. TICKET:
  596. Y=0 : For L=1 To GT(T) : Gosub LIN : Next L : N=1 : L=1 : Return 
  597. LIN:
  598. For N=1 To NX(T) : X=-1 : If D(T,N,L)>9 Then X=-2
  599.    C$=Str$(D(T,N,L)) : If D(T,N,L)=0 Then C$="  "
  600.    Gosub NUM
  601. Next N : Return 
  602. CHECK:
  603. CH=0 : NN=N : LL=L : For L=1 To GT(T)
  604.    For N=1 To NX(T) : If D(T,N,L)>CH Then CH=D(T,N,L)
  605. Next N : Next L : N=NN : L=LL : Return 
  606. NAME:
  607. Wind Open 1,0,8,30,1 : Window 1
  608. Pen 7 : Input "  Enter name ? ";X$(T) : Wind Close 
  609. If Len(X$(T))>10 Then Bell 20 : Locate ,1 : Centre Pen$(4)+"No more than 10 characters long." : Wait 150 : Cline : Goto NAME
  610. Gosub LAYOUT : Gosub TICKET : Goto MAIN
  611. GMTT:
  612. Wind Open 1,0,8,30,1 : Window 1
  613. Pen 7 : Input "  Enter number of games ? ";GGG : Wind Close 
  614. GPT$=Pen$(4)+"No more than"+Str$(GPT)+" games per ticket."
  615. If GGG<1 Then Goto MAIN
  616. If GGG>GPT Then Bell 20 : Locate ,1 : Centre GPT$ : Wait 150 : Cline : Goto GMTT
  617. TZ=T : Gosub TZERO : L=1 : N=1 : GT(T)=GGG : Gosub LAYOUT : Goto MAIN
  618. TSYSTEM:
  619. Wind Open 1,0,8,30,1 : Window 1
  620. Pen 7 : Input "  Enter ticket system ? ";NXX : Wind Close 
  621. If MD$="1" or MD$="3" Then NXMN=4 : NXMX=20
  622. If MD$="2" Then NXMN=3 : NXMX=24
  623. NX$=Pen$(4)+"Systems are no less than"+Str$(NXMN)+" and no more than "+Str$(NXMX)
  624. If NXX<1 Then Goto MAIN
  625. If NXX<NXMN or NXX>NXMX Then Bell 20 : Locate ,1 : Centre NX$ : Wait 150 : Cline : Goto TSYSTEM
  626. TZ=T : Gosub TZERO : L=1 : N=1
  627. If MD$="2" Then Inc NXX
  628. NX(T)=NXX : Gosub LAYOUT : Goto MAIN
  629. TSAVE:
  630. TTT=T : T=TT : Gosub CHECK : T=TTT : TS=TT : If CH=0 Then Dec TS
  631. LLL=L : NNN=N : Gosub DCHECK : If DCH=1 or TS=0 Then Goto MAIN
  632. TSV:
  633. FL$="Enter name of data file to save." : Gosub FREQ
  634. If N$=""
  635.    If Z1=40 : Goto TL1 : End If : Goto MAIN
  636. End If 
  637. Locate ,1 : Cline : Pen 4
  638. If Exist(N$)=-1
  639.    Centre "File already exists. Shall I overwrite ?  (Y/N)"
  640.    Gosub CONFIRM : If E$="N" : Goto TSV : End If 
  641. End If 
  642. Centre "SAVING" : Open Out 1,N$ : Print #1,FCH2$ : Print #1,MD$;",";Mid$(Str$(TS),2)
  643. For T=1 To TS : Print #1,X$(T);",";Mid$(Str$(GT(T)),2);",";Mid$(Str$(NX(T)),2)
  644.    For L=1 To GT(T) : For N=1 To NX(T) : Print #1,Mid$(Str$(D(T,N,L)),2)
  645. Next N : Next L : Next T : Close 1 : T=TTT : L=LLL : N=NNN : Cline : Bell 
  646. If Z1=40 : Goto TL1 : End If : Goto MAIN
  647. TLOAD:
  648. If TT=1 Then Gosub CHECK : If CH=0 Then Goto TL1
  649. Locate ,1 : Centre Pen$(4)+"Shall I save existing data before loading ?  (Y/N)"
  650. Gosub CONFIRM : If E$="Y" Then Goto TSAVE
  651. TL1:
  652. FL$="Enter name of data file to load." : Gosub FREQ
  653. If N$=""
  654.    If Z1=40 : Goto MAIN : End If : Return 
  655. End If 
  656. TLD:
  657. If Exist(N$)=0
  658.    Bell 20 : Locate ,LCC : Pen 4 : Centre "Data file does not exist."
  659.    Wait 150 : If ST=1 : ST=2 : Return : End If : Cline : Goto TL1
  660. End If : Locate ,LCC : Pen 4 : Centre "Loading data file."
  661. STLD:
  662. DFC$="" : Open In 1,N$ : Set Input 13,10 : Input #1,DFC$
  663. If DFC$<>FCH$ and DFC$<>FCH2$
  664.    Bell 20 : If Z1=40 : Pen 3 : End If 
  665.    Centre "Not a Lotto Check data file....!!" : Wait 150
  666.    Cline : Close 1 : If ST=1 : ST=2 : Return : End If : Goto TL1
  667. End If : If Z1=40 or V=40 Then Gosub TEDIT
  668. If DFC$=FCH$ Then MD$="1" Else Input #1,MD$
  669. Gosub TLIMITS
  670. Input #1,TT : For T=1 To TT : Input #1,X$(T),GT(T),NX(T)
  671.    For L=1 To GT(T) : For N=1 To NX(T) : Input #1,D(T,N,L)
  672. Next N : Next L : Next T : Close 1 : Bell : If Z1<>40 Then Return 
  673. T=1 : Gosub LAYOUT : Gosub TICKET : Goto MAIN
  674. FREQ:
  675. Show : N$=Fsel$(Dir$,"LC-DEF.DAT",FL$) : Hide : Return 
  676. TGOTO:
  677. TTG=0 : If Z$<>"G" Then Gosub DCHECK : If DCH=1 Then Goto MAIN
  678. Locate ,LCC : Cline : Wind Open 1,0,LC,30,1 : Window 1
  679. Pen 7 : Input "  Goto ticket number ? ";TTT : Wind Close 
  680. If TTT<1
  681.    If Z$="G" : TTG=1 : Return : End If : Goto MAIN
  682. End If 
  683. If TTT>TT Then Bell 20 : Centre Pen$(4)+"Ticket does not exist." : Wait 150 : Goto TGOTO
  684. T=TTT : If Z$="G" Then Return 
  685. Gosub LAYOUT : Gosub TICKET : Goto MAIN
  686. TSORT:
  687. LL=L : NN=N : Gosub DCHECK : If DCH=1 Then Goto MAIN
  688. TTT=T : T=TT : Gosub CHECK : TT2=TT : If CH=0 Then TT2=TT-1
  689. Locate ,1 : Pen 7 : Centre "Sorting all tickets."
  690. For T=1 To TT2
  691.    For L=1 To GT(T)
  692.       For N=1 To NX(T) : R(N)=D(T,N,L) : Next N
  693.       Gosub RSORT
  694.    Next L
  695. Next T : T=TTT : Cline : Gosub TICKET : L=LL : N=NN : Bell : Goto MAIN
  696. RSORT:
  697. NXT=NX(T) : If MD$="4" Then NXT=D(T,11,L)
  698. If MD$="2" Then NXT=NX(T)-1 : D(T,NX(T),L)=R(NX(T)) : R(NX(T))=0
  699. For N=1 To NXT : NX=NXT-N+1 : D(T,NX,L)=0 : For S=1 To NXT
  700.       If R(S)>D(T,NX,L) Then D(T,NX,L)=R(S) : CL=S
  701. Next S : R(CL)=0 : Next N : Return 
  702. GINSERT:
  703. LLL=L : NNN=N : TA=T : TB=T : TZ=T : NC=NX(T) : Inc GT(T) : GL=GT(T)-L-1
  704. For GE=0 To GL : LL=GT(T)-GE : LB=LL-1 : Gosub GCOPY : Next GE : LL=LLL
  705. Gosub GZERO : Gosub LAYOUT : Gosub TICKET : L=LLL : N=NNN : Goto MAIN
  706. TINSERT:
  707. Gosub DCHECK : Gosub CHECK : If CH=0 or DCH=1 Then Goto MAIN
  708. TTT=T : T=TT : Gosub CHECK : T=TTT : If TT=TMX and CH>0 Then Goto MAIN
  709. Locate ,1 : Centre Pen$(4)+"Inserting ticket." : If CH>0 Then Inc TT
  710. TL=TT-T-1 : For TI=0 To TL : TA=TT-TI : TB=TA-1 : Gosub TCOPY : Next TI
  711. TZ=T : Gosub TZERO : L=1 : N=1 : Gosub LAYOUT : Bell : Goto MAIN
  712. TCOPY:
  713. X$(TA)=X$(TB) : GT(TA)=GT(TB) : NX(TA)=NX(TB) : NC=NX(TA)
  714. For LL=1 To GT(TA) : LB=LL : Gosub GCOPY : Next LL : Return 
  715. GCOPY:
  716. For NN=1 To NC : D(TA,NN,LL)=D(TB,NN,LB) : Next NN : Return 
  717. TZERO:
  718. X$(TZ)="" : For LL=1 To GT(TZ) : Gosub GZERO : Next LL : Return 
  719. GZERO:
  720. NZ=NX(TZ) : If TZ=0 and LL=0 Then NZ=25
  721. For NN=1 To NZ : D(TZ,NN,LL)=0 : Next NN : Return 
  722. TERASE:
  723. Gosub CHECK : If T=TT and CH=0 Then Goto MAIN
  724. Locate ,1 : Centre Pen$(4)+"Erasing ticket."
  725. If T<TT
  726.    TL=TT-T-1 : For TE=0 To TL : TA=T+TE : TB=TA+1 : Gosub TCOPY : Next TE
  727. End If 
  728. TZ=TT : Gosub TZERO : Dec TT : Gosub LAYOUT : Gosub TICKET : Bell : Goto MAIN
  729. GERASE:
  730. If GT(T)<2 Then Goto TERASE
  731. LLL=L : NNN=N : TA=T : TB=T : TZ=T : NC=NX(T)
  732. If L<GT(T)
  733.    GL=GT(T)-L-1 : For GE=0 To GL : LL=L+GE : LB=LL+1 : Gosub GCOPY : Next GE
  734. End If 
  735. LL=GT(T) : Gosub GZERO : Dec GT(T) : Gosub LAYOUT : Gosub TICKET
  736. L=LLL : If L>GT(T) Then L=GT(T)
  737. N=NNN : Goto MAIN
  738. TPRINT:
  739. TTT=T : T=TT : Gosub CHECK : If CH=0 Then Dec TT
  740. If TT=0 Then Goto MAIN
  741. TPRT:
  742. LLL=L : NNN=N : Locate ,1
  743. Gosub PRCHECK : If PR<>252 Then L=LLL : N=NNN : Goto MAIN
  744. Open Out 1,PR$ : If Z3=1 and Z1=25 Then Gosub TPR : Goto PREND
  745. If GCH=1 Then Print #1,LF$; : Gosub GPR : GCH=0 : Goto PREND
  746. For T=1 To TT : Gosub TPR : Next T : T=TTT
  747. PREND:
  748. Close 1 : L=LLL : N=NNN : Cline : Bell : Goto MAIN
  749. TPR:
  750. SUSS=NX(T) : Gosub SYSUSS
  751. Print #1,X$(T);SYS$;" ticket";T;LF$;LF$; : SP$=" " : If NX(T)>18 Then SP$=""
  752. For L=1 To GT(T) : Gosub GPR : Next L : Print #1,LF$;LF$; : Return 
  753. GPR:
  754. Print #1,Chr$(64+L);" ";
  755. For N=1 To NX(T)
  756.    PP$=Str$(D(T,N,L)) : If D(T,N,L)=0 Then PP$="   "
  757.    SS$="" : If D(T,N,L)>0 and D(T,N,L)<10 Then SS$=" "
  758.    Print #1,SS$;PP$;SP$;
  759.    If MD$="4" and N=NX(T)-1 Then Print #1,"  Spot";
  760.    If MD$="2" and N=NX(T)-1 Then Print #1,"  PB";
  761. Next N : Print #1,LF$; : Return 
  762. PRCHECK:
  763. PR=Peek($BFD000) : Pen 4
  764. If PR=252
  765.    Centre "Sending data to printer."
  766. Else 
  767.    Bell 20 : Centre "Printer not active...!!" : Wait 150 : Cline 
  768. End If : Return 
  769. PALCHECK:
  770. If Ntsc=-1
  771.    Screen Display 0,,40,, : PS=7
  772. Else 
  773.    Screen Display 0,,62,, : PS=6
  774. End If : Return 
  775. CONFIRM:
  776. Bell BEEP : Do : E$=Upper$(Inkey$) : If E$="Y" or Asc(E$)=78 Then Cline : Return 
  777. Loop 
  778. TERROR:
  779. If Errn=100 or Errn=34 Then Resume Next 
  780. Bell 20 : Pen 3 : Locate ,1 : Cline 
  781. If Errn=84 Then Centre "DISK IS WRITE PROTECTED" : Resume TSV
  782. If Errn=88 Then Centre "DISK IS FULL" : Resume TSV
  783. If Errn=93
  784.    If Z1=33 : Resume TSV : End If : Resume TLOAD
  785. End If 
  786. Cls : Locate ,13 : Centre Pen$(4)+"Error No."+Str$(Errn)+" not defined."
  787. Locate ,24 : Centre Pen$(7)+"Press Enter to quit." : PP$=Chr$(13) : Gosub PAUSE : End 
  788. PAUSE:
  789. Do : If Inkey$=PP$ : Exit : End If : Loop : Return 
  790. TITLE2:
  791. Cls : Pen 7 : Inverse On 
  792. Print "              LOTTO CHECK  Version 2.0  (C) 1997  Lorence Lombardo             "
  793. Inverse Off : Pen 2 : Print : Return 
  794. ABOUT:
  795. Gosub TSCREEN
  796. Print "  This version of Lotto Check both for the Amiga and IBM, was written on an"
  797. Print "  Amiga 1200 equiped with a Blizzard 68060 board. The IBM version was ported"
  798. Print "  from the Amiga version using `PCx' the best & fastest IBM emulator I have"
  799. Print "  have ever seen for the Amiga, which was written by Jim Drew & MicroCode"
  800. Print "  Solutions. Thanks Jim & MicroCode. Looking forward to future versions of"
  801. Print "  this excellent program. Thanks to"; : Pen 5 : Print "  Richard Gormley"+Pen$(2)+" for scrutinizing,"
  802. Print "  bug testing and program suggestions. Thanks to "+Pen$(5)+"Warren Rizzi"+Pen$(2)+" for the icon"
  803. Print "  on the Amiga version." : Pen 3 : Print 
  804. Print "                       This program is `ShareWare'" : Print : Pen 2
  805. Print "  If you try this program and wish to continue to use it, you may do so"
  806. Print "  provided you do following as payment:-" : Print 
  807. Print "  * Send a disk with some PD on it, preferably AMIGA PD but IBM PD will"
  808. Print "    be accepted."
  809. Print "  * Let me know whether you are using the AMIGA or IBM version, the version"
  810. Print "    number, tell what you think of it and if you have found bugs let me"
  811. Print "    know what they are." : Pen 7
  812. Print "   Payment should be sent to:"+Pen$(6)+"  LORRY"
  813. Print "                               5 Rankin street"
  814. Print "                               Altona, Victoria,"
  815. Print "                               Australia, 3018." : Pen 5
  816. Centre "Press space to continue" : PP$=" " : Gosub PAUSE : Gosub TSCREEN
  817. Print "  I dont think that I am asking for too much. If you dont comply to the"
  818. Print "  ShareWare requirements then you are a very naughty immoral person and I"
  819. Print "  hope your hard disk is wiped by a virus or your computer mysteriously"
  820. Print "  self combusts." : Print : Print : Pen 6
  821. Print "  This program may be freely distributed on PD libraries."
  822. Pen 4 : Print : Print : Print "  LEGAL CRAP:" : Pen 2
  823. Print "  Although I have never known this program to fail I can not take any"
  824. Print "  responsibility for failure of this program or for human data entry error."
  825. Pen 5 : Locate ,24 : Centre "Press enter to return to the options menu."
  826. PP$=Chr$(13) : Gosub PAUSE : Gosub CSCREEN : Goto OPTIONS